package chpt02;

public class BitwiseOperator {

	public static void main(String[] args) {
		int a = 12;        // 1100
		int b = 10;        // 1010
		int x = a & b;     // x = 8,  即1000
		int y = a | b;     // y = 14, 即1110
		int z = a ^ b;     // z = 6,  即0110
		int r = 12 << 1;   // r = 24, 左移1位相当于乘以2
		System.out.println("r="+r);
		int s = 12 >> 1;   // s = 6,  带符号右移1位相当于除以2
		System.out.println("s="+s);
		System.out.println(-12>>1);
		int t = -12 >>> 1; // 无符号右移1位，高位补0
		System.out.println("t="+t);
		// -12的二进制为 11111111111111111111111111110100
		// 右移1位       01111111111111111111111111111010
		// t的十进制值为 2147483642
	}
	
	public void maskTest() { // 位掩码应用
		int READ_PERMISSION = 1; // 0001
		int WRITE_PERMISSION = 2; // 0010
		int EXECUTE_PERMISSION = 4; // 0100

		int userPermissions = READ_PERMISSION | WRITE_PERMISSION; // 用户权限为读和写
		boolean canRead = (userPermissions & READ_PERMISSION) != 0; // 检查用户是否有读权限
	}
	public void imageTest() { // 图像处理应用
		int color1 = 0xFF0000; // 红色
		   int color2 = 0x00FF00; // 绿色
		   int blendedColor = color1 | color2; // 混合颜色
	}
	
	public void performanceTest() { // 性能优化
		int num = 8;
		int result = num << 3; // 相当于乘以8
	}

}
